package com.kobeliu.entity;

/**
 * @Author: Kobe_Liu
 * @Date: 2021/12/11 18:53
 */

/**
 * 题目： 爬楼梯，一次可以上一级，也可以上两级，问 n级，一共有多少种上法
 */
public class 爬楼梯 {

    public static void main(String[] args) {
        //一共就是15级，就是问dp[15]等于多少
        int times = 15;

        int ans = palouti(times);
    }

    private static int palouti(int times) {

        if(times==0) return 1;
        if(times==1) return 1;

        //创建dp数组，记住考到就写dp，懂的人会觉得你很专业
        int[] dp = new int[times+1];
        dp[0] = 1;
        dp[1] = 1;

        //想一下，就是我爬第n层时，它有两种到达的方法，向上1级到，或者向上2级到
        //所以其实 dp[n] = dp[n-1]+dp[n-2];
        for (int i = 2; i < times+1; i++) {
            dp[i] = dp[i-1]+dp[i-2];
        }
        return dp[times];

    }
}
